package com.neuedu.corejava.ch6;
/**
 * 20190801
 * oop:
 * 
 * 1.把客观事物进行分门别类
 * 
 * 
 * @author admin
 *
 */
public class Computer {
	//主机：：机箱，主板，CPU，内存条，显卡，硬盘
	
	//has -a关系，组合关系.依赖关系，强依赖关系（计算机 依赖于 主机）
	//实例变量，通常也称为属性
	//封装的概念-就是隐藏内部的实现，并对外提供访问的接口
	//封装就是把属性私有化，使用private修饰属性；并提供公有的getter和setter方法，或，构造方法访问私有的属性
	private MainMachine machine;
	
	//显示器
	private Display display;
	
	//键盘
	private KeyBoard keyBoard;
	
	//鼠标
	private Mouse mouse;
	
	
	/**
	 * 构造方法：
	 * 1.方法名与类名相同（大小写也相同）；
	 * 2.没有返回值类型(不需要写void)；
	 * 3.当使用new关键词实例化对象时，需要调用构造方法；
	 * 4.构造方法一般用于实例化对象时，申请内存使用；或实例化对象时初始化属性
	 * 5.java编译器会默认给java类提供一个空参的构造方法（当没有编写空参构造方法时，会自动提供）
	 *   如果显示编写了空参构造方法，则编译器不再提供构造方法
	 * 6.构造方法也可以进行方法的重载
	 * 
	 */
	public Computer(){
		//初始化的概念：其实是第一次给变量进行赋值
		machine=new MainMachine();
		keyBoard=new KeyBoard();
		display=new Display();
		mouse=new Mouse();
	}
	
	//全参构造方法
	public Computer(MainMachine machine, Display display, KeyBoard keyBoard,
			Mouse mouse) {
		super();
		//当属性与局部变量名，名称相同时会产生名称冲突
		//可以使用this关键表示类的属性
		this.machine = machine;
		this.display = display;
		this.keyBoard = keyBoard;
		this.mouse = mouse;
	}

	//计算
	public void caculate(){
		System.out.println("执行计算");
	}
	public MainMachine getMachine() {
		return machine;
	}

	public void setMachine(MainMachine machine) {
		this.machine = machine;
	}

	public Display getDisplay() {
		return display;
	}

	public void setDisplay(Display display) {
		this.display = display;
	}

	public KeyBoard getKeyBoard() {
		return keyBoard;
	}

	public void setKeyBoard(KeyBoard keyBoard) {
		this.keyBoard = keyBoard;
	}

	public Mouse getMouse() {
		return mouse;
	}

	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}

	

}
